package com.itheima.tlias.controller;

import com.itheima.tlias.model.entity.Dept;
import com.itheima.tlias.model.response.Result;
import com.itheima.tlias.service.DeptService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author Lee
 * @created 2024/4/7
 * @describtion
 */
@RestController
@RequestMapping(path = "/depts")
public class DeptController {
    @Autowired
    private DeptService deptService;

    @PutMapping
    public Result update(@RequestBody Dept dept) {
        deptService.updateDeptById(dept);
        return Result.success();
    }

    /**
     * 部门数据回显接口 （根据部门id 查询部门信息）
     *
     * @param id 部门id
     * @return 部门信息
     * 演示： 路径传参  比如 /depts/1
     */
    @GetMapping(path = "/{id}")
    public Result<Dept> getDeptById(@PathVariable Integer id) {
        Dept Dept = deptService.getDeptById(id);
        return Result.success(Dept);

    }

    /**
     * 前端传递参数是json 后端该如何处理？
     * 基于 注解 @RequestBody
     * 定义一个java对象接收json数据 ，json 属性 要和java 类中属性对应!
     * 名称一致性原则！
     *
     * @return
     */
    @PostMapping
    public Result add(@RequestBody Dept dept) {
        deptService.save(dept);
        return Result.success();

    }

    /**
     * 根据id删除数据信息
     *
     * @param id 部门id
     * @return
     */
    @DeleteMapping
    public Result delById(@RequestParam("id") Integer id) {
        deptService.delById(id);
        return Result.success();
    }

    /**
     * 获取deptService的getDepts方法
     *
     * @return
     */
    @GetMapping
    public Result<List<Dept>> depts() {
        return Result.success(deptService.getDepts());
    }
}
